<!DOCTYPE html>
<html lang="en-us">
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    
<meta charset="UTF-8">
<title>Geohashes | Elasticsearch: The Definitive Guide [2.x] | Elastic</title>
<link rel="home" href="index.html" title="Elasticsearch: The Definitive Guide [2.x]">
<link rel="up" href="geoloc.html" title="Geolocation">
<link rel="prev" href="sorting-by-distance.html" title="Sorting by Distance">
<link rel="next" href="geohash-mapping.html" title="Mapping Geohashes">
<meta name="DC.type" content="Learn/Docs/Legacy/Elasticsearch/Definitive Guide/2.x">
<meta name="DC.subject" content="Elasticsearch">
<meta name="DC.identifier" content="2.x">
<meta name="robots" content="noindex,nofollow">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://cdn.optimizely.com/js/18132920325.js"></script>
    <link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
    <link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
    <link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
    <link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
    <link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
    <link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
    <link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
    <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
    <link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192">
    <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
    <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
    <link rel="manifest" href="/manifest.json">
    <meta name="apple-mobile-web-app-title" content="Elastic">
    <meta name="application-name" content="Elastic">
    <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="msapplication-TileImage" content="/mstile-144x144.png">
    <meta name="theme-color" content="#ffffff">
    <meta name="naver-site-verification" content="936882c1853b701b3cef3721758d80535413dbfd">
    <meta name="yandex-verification" content="d8a47e95d0972434">
    <meta name="localized" content="true">
    <meta name="st:robots" content="follow,index">
    <meta property="og:image" content="https://www.elastic.co/static/images/elastic-logo-200.png">
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
    <link rel="icon" href="/favicon.ico" type="image/x-icon">
    <link rel="apple-touch-icon-precomposed" sizes="64x64" href="/favicon_64x64_16bit.png">
    <link rel="apple-touch-icon-precomposed" sizes="32x32" href="/favicon_32x32.png">
    <link rel="apple-touch-icon-precomposed" sizes="16x16" href="/favicon_16x16.png">
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    <link rel="stylesheet" type="text/css" href="/guide/static/styles.css">
  </head>

  <!--© 2015-2021 Elasticsearch B.V. Copying, publishing and/or distributing without written permission is strictly prohibited.-->

  <body>
    <!-- Google Tag Manager -->
    <script>dataLayer = [];</script><noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-58RLH5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-58RLH5');</script>
    <!-- End Google Tag Manager -->

    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-12395217-16"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'UA-12395217-16');
    </script>

    <!--BEGIN QUALTRICS WEBSITE FEEDBACK SNIPPET-->
    <script type="text/javascript">
      (function(){var g=function(e,h,f,g){
      this.get=function(a){for(var a=a+"=",c=document.cookie.split(";"),b=0,e=c.length;b<e;b++){for(var d=c[b];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null};
      this.set=function(a,c){var b="",b=new Date;b.setTime(b.getTime()+6048E5);b="; expires="+b.toGMTString();document.cookie=a+"="+c+b+"; path=/; "};
      this.check=function(){var a=this.get(f);if(a)a=a.split(":");else if(100!=e)"v"==h&&(e=Math.random()>=e/100?0:100),a=[h,e,0],this.set(f,a.join(":"));else return!0;var c=a[1];if(100==c)return!0;switch(a[0]){case "v":return!1;case "r":return c=a[2]%Math.floor(100/c),a[2]++,this.set(f,a.join(":")),!c}return!0};
      this.go=function(){if(this.check()){var a=document.createElement("script");a.type="text/javascript";a.src=g;document.body&&document.body.appendChild(a)}};
      this.start=function(){var a=this;window.addEventListener?window.addEventListener("load",function(){a.go()},!1):window.attachEvent&&window.attachEvent("onload",function(){a.go()})}};
      try{(new g(100,"r","QSI_S_ZN_emkP0oSe9Qrn7kF","https://znemkp0ose9qrn7kf-elastic.siteintercept.qualtrics.com/WRSiteInterceptEngine/?Q_ZID=ZN_emkP0oSe9Qrn7kF")).start()}catch(i){}})();
    </script><div id="ZN_emkP0oSe9Qrn7kF"><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>
    <!--END WEBSITE FEEDBACK SNIPPET-->

    <div id="elastic-nav" style="display:none;"></div>
    <script src="https://www.elastic.co/elastic-nav.js"></script>

    <!-- Subnav -->
    <div>
      <div>
        <div class="tertiary-nav d-none d-md-block">
          <div class="container">
            <div class="p-t-b-15 d-flex justify-content-between nav-container">
              <div class="breadcrum-wrapper"><span><a href="/guide/" style="font-size: 14px; font-weight: 600; color: #000;">Docs</a></span></div>
            </div>
          </div>
        </div>
      </div>
    </div>

    <div class="main-container">
      <section id="content">
        <div class="content-wrapper">

          <section id="guide" lang="en">
            <div class="container">
              <div class="row">
                <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                  <!-- start body -->
                  <div class="page_header">
<p>
  <strong>WARNING</strong>: The 2.x versions of Elasticsearch have passed their
  <a href="https://www.elastic.co/support/eol">EOL dates</a>. If you are running
  a 2.x version, we strongly advise you to upgrade.
</p>
<p>
  This documentation is no longer maintained and may be removed. For the latest
  information, see the <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html">current
  Elasticsearch documentation</a>.
</p>
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch: The Definitive Guide [2.x]</a></span>
»
<span class="breadcrumb-link"><a href="geoloc.html">Geolocation</a></span>
»
<span class="breadcrumb-node">Geohashes</span>
</div>
<div class="navheader">
<span class="prev">
<a href="sorting-by-distance.html">« Sorting by Distance</a>
</span>
<span class="next">
<a href="geohash-mapping.html">Mapping Geohashes »</a>
</span>
</div>
<div class="chapter">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="geohashes"></a>Geohashes<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch-definitive-guide/edit/2.x/320_Geohashes/40_Geohashes.asciidoc">edit</a>
</h2>
</div></div></div>
<p><a href="http://en.wikipedia.org/wiki/Geohash" class="ulink" target="_top">Geohashes</a> are a way of encoding
<code class="literal">lat/lon</code> points as strings.  The original intention was to have a
URL-friendly way of specifying geolocations, but geohashes have turned out to
be a useful way of indexing geo-points and geo-shapes in databases.</p>
<p>Geohashes divide the world into a grid of 32 cells—​4 rows and 8 columns—​each represented by a letter or number.  The <code class="literal">g</code> cell covers half of
Greenland, all of Iceland, and most of Great Britain. Each cell can be further
divided into another 32 cells, which can be divided into another 32 cells,
and so on.  The <code class="literal">gc</code> cell covers Ireland and England, <code class="literal">gcp</code> covers most of
London and part of Southern England, and <code class="literal">gcpuuz94k</code> is the entrance to
Buckingham Palace, accurate to about 5 meters.</p>
<p>In other words, the longer the geohash string, the more accurate it is.  If
two geohashes share a prefix— and <code class="literal">gcpuuz</code>—then it implies that
they are near each other.  The longer the shared prefix, the closer they
are.</p>
<p>That said, two locations that are right next to each other may have completely
different geohashes. For instance, the
<a href="http://en.wikipedia.org/wiki/Millennium_Dome" class="ulink" target="_top">Millenium Dome</a> in London has
geohash <code class="literal">u10hbp</code>, because it falls into the <code class="literal">u</code> cell, the next top-level cell
to the east of the <code class="literal">g</code> cell.</p>
<p>Geo-points can index their associated geohashes automatically, but more
important, they can also index all geohash <em>prefixes</em>. Indexing the location
of the entrance to Buckingham Palace—​latitude <code class="literal">51.501568</code> and longitude
<code class="literal">-0.141257</code>—would index all of the geohashes listed in the following table,
along with  the approximate dimensions of each geohash cell:</p>
<div class="informaltable">
<table border="1" cellpadding="4px">
<colgroup>
<col class="col_1">
<col class="col_2">
<col class="col_3">
</colgroup>
<thead>
<tr>
<th align="left" valign="top">Geohash</th>
<th align="left" valign="top">Level</th>
<th align="left" valign="top">Dimensions</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top"><p><code class="literal">g</code></p></td>
<td align="left" valign="top"><p><code class="literal">1</code></p></td>
<td align="left" valign="top"><p>~ 5,004km x 5,004km</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">gc</code></p></td>
<td align="left" valign="top"><p><code class="literal">2</code></p></td>
<td align="left" valign="top"><p>~ 1,251km x 625km</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">gcp</code></p></td>
<td align="left" valign="top"><p><code class="literal">3</code></p></td>
<td align="left" valign="top"><p>~ 156km x 156km</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">gcpu</code></p></td>
<td align="left" valign="top"><p><code class="literal">4</code></p></td>
<td align="left" valign="top"><p>~ 39km x 19.5km</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">gcpuu</code></p></td>
<td align="left" valign="top"><p><code class="literal">5</code></p></td>
<td align="left" valign="top"><p>~ 4.9km x 4.9km</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">gcpuuz</code></p></td>
<td align="left" valign="top"><p><code class="literal">6</code></p></td>
<td align="left" valign="top"><p>~ 1.2km x 0.61km</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">gcpuuz9</code></p></td>
<td align="left" valign="top"><p><code class="literal">7</code></p></td>
<td align="left" valign="top"><p>~ 152.8m x 152.8m</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">gcpuuz94</code></p></td>
<td align="left" valign="top"><p><code class="literal">8</code></p></td>
<td align="left" valign="top"><p>~ 38.2m x 19.1m</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">gcpuuz94k</code></p></td>
<td align="left" valign="top"><p><code class="literal">9</code></p></td>
<td align="left" valign="top"><p>~ 4.78m x 4.78m</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">gcpuuz94kk</code></p></td>
<td align="left" valign="top"><p><code class="literal">10</code></p></td>
<td align="left" valign="top"><p>~ 1.19m x 0.60m</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">gcpuuz94kkp</code></p></td>
<td align="left" valign="top"><p><code class="literal">11</code></p></td>
<td align="left" valign="top"><p>~ 14.9cm x 14.9cm</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">gcpuuz94kkp5</code></p></td>
<td align="left" valign="top"><p><code class="literal">12</code></p></td>
<td align="left" valign="top"><p>~ 3.7cm x 1.8cm</p></td>
</tr>
</tbody>
</table>
</div>
<p>The <a href="/guide/en/elasticsearch/reference/2.4/query-dsl-geohash-cell-query.html" class="ulink" target="_top"><code class="literal">geohash_cell</code> filter</a> can use
these geohash prefixes to find locations near a specified <code class="literal">lat/lon</code> point.</p>


</div>
<div class="navfooter">
<span class="prev">
<a href="sorting-by-distance.html">« Sorting by Distance</a>
</span>
<span class="next">
<a href="geohash-mapping.html">Mapping Geohashes »</a>
</span>
</div>
</div>

                  <!-- end body -->
                </div>
                <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                  <div id="rtpcontainer" style="display: block;">
                    <div class="mktg-promo">
                      <h3>Most Popular</h3>
                      <ul class="icons">
                        <li class="icon-elasticsearch-white"><a href="https://www.elastic.co/webinars/getting-started-elasticsearch?baymax=default&amp;elektra=docs&amp;storm=top-video">Get Started with Elasticsearch: Video</a></li>
                        <li class="icon-kibana-white"><a href="https://www.elastic.co/webinars/getting-started-kibana?baymax=default&amp;elektra=docs&amp;storm=top-video">Intro to Kibana: Video</a></li>
                        <li class="icon-logstash-white"><a href="https://www.elastic.co/webinars/introduction-elk-stack?baymax=default&amp;elektra=docs&amp;storm=top-video">ELK for Logs &amp; Metrics: Video</a></li>
                      </ul>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </section>

        </div>


<div id="elastic-footer"></div>
<script src="https://www.elastic.co/elastic-footer.js"></script>
<!-- Footer Section end-->

      </section>
    </div>

<script src="/guide/static/jquery.js"></script>
<script type="text/javascript" src="/guide/static/docs.js"></script>
<script type="text/javascript">
  window.initial_state = {}</script>
  </body>
</html>
